#ifndef _ARC_LOG_SYSTEM_H_
#define _ARC_LOG_SYSTEM_H_

	using namespace System;
	using namespace System::Runtime::InteropServices;


	// const log level define 
	static const Int32 LEVEL_NOTEST	= 800;	
	static const Int32 LEVEL_DEBUG	= 700;
	static const Int32 LEVEL_INFO	= 600;
	static const Int32 LEVEL_NOTICE	= 500;
	static const Int32 LEVEL_WARN	= 400;
	static const Int32 LEVEL_ERROR	= 300;
	static const Int32 LEVEL_CRIT	= 200;
	static const Int32 LEVEL_ALERT	= 100;
	static const Int32 LEVEL_FATAL	= 0;
	static const Int32 LEVEL_EMERG	= 0;

	[DllImport("ArcLog.dll", CharSet=CharSet::Unicode)]
	extern "C" bool ArcInitializeLogSystemW(String^ config);

	[DllImport("ArcLog.dll", CharSet=CharSet::Unicode)]
	extern "C" void ArcLogW(Int32 level, String^, ...);

	[DllImport("ArcLog.dll", CharSet=CharSet::Unicode)]
	extern "C" void ArcCategoryLogW(Int32 level, String^ category, String^ fmt, ...);

	[DllImport("ArcLog.dll", CharSet=CharSet::Unicode)]
	extern "C" int	ArcLogGetErrorMessageW(String^ errorMsgBuffer, Int32 messageLen);

	[DllImport("ArcLog.dll", CharSet=CharSet::Unicode)]
	extern "C" void ArcLogNDCPushW(String^ ndcmessage);

	[DllImport("ArcLog.dll", CharSet=CharSet::Unicode)]
	extern "C" void ArcLogNDCPop();



#endif